// panic 意味着有些出乎意料的错误发生。通常我们用它来表示程序正常运行中不应该出现的，或者我们没有处理好的错误。
package main

import "os"

func main() {

	// 本例中有两个 panic，先触发了哪一个程序就会在哪一个停止并输出相关的错误信息

	// 如果不注释掉这一行，程序会直接停在下面这一行代码的位置，不会往下执行
	panic("a problem")

	// panic 的一个基本用法就是在一个函数返回了错误值但是我们并不知道（或者不想）处理时终止运行。
	// 这里是一个在创建一个新文件时返回异常错误时的 panic 用法。
	_, err := os.Create("/tmp/file")
	if err != nil {
		panic(err)
	}
}

// 运行程序将会引起 panic，输出一个错误消息和 Go 运行时栈信息，并且返回一个非零的状态码。
// 注意，不像在有些语言中使用异常处理错误，在 Go 中则习惯通过返回值来标示错误。
